#include <bits/stdc++.h>

using namespace std;

int n;//共计N个数
int m;//选m个数
vector<int> chosen;
/*
不剪枝的结果：
xiaowang xiaoA
xiaowang xiaoli
xiaoA xiaoli ---下面的需要被剪掉
xiaoA xiaowang   
xiaoli xiaowang
xiaoli xiaoA
*/
void calc(int x) {
    if (chosen.size() > m || chosen.size() + (n - x + 1) < m) //剪枝    后面一半在前面已经枚举过了

        return;
    if (x == n + 1) { //选够了m个数输出
        for (int i = 0; i < chosen.size(); i++)
            printf("%d ", chosen[i]);
            //也可以不输出，存放起来也是可以的，主要是看题目。
        puts("");
        return;
    }
    calc(x + 1);
    chosen.push_back(x);
    calc(x + 1);
    chosen.pop_back();//消除痕迹
}
int main()
{
    cin>>n>>m;
     calc(1);
}